In modern data centers, strategies for placing guest servers (e.g., virtual machines) on host servers (e.g., hypervisors) take into consideration performance metrics related to CPU utilization, memory usage, I/O usage, etc. However, such placement strategies can lead to sub-optimal network performance. For example, it is possible that two guest servers that exchange large quantities of traffic between each other will be placed on the network in such a way that their traffic has to traverse through multiple switches. This results in bandwidth waste at the aggregate or core switches and increased traffic latency.